﻿using Microsoft.VisualStudio.TestTools.UnitTesting;
using WatiN.Core;
using SW = FrameworkTest.Helper.SimulatorWeb;

namespace UserCaseTest.ModuloDeBusqueda
{
    /// <summary>
    ///  Flujo Normal:
    ///  1.	El usuario es direccionado a la página de detalle del ítem
    ///  2.	El sistema muestra la página con los detalles tabulados del material bibliográfico seleccionado:
    ///  -1	Imagen 
    ///  -2	Título
    ///  -3	Autores
    ///  -4	Editorial
    ///  -5	País
    ///  -6	Idioma
    ///  -7	Clasificación
    ///  -8	Propiedades Adicionales (tabuladas)
    ///  -9	Panel con ítems disponibles a solicitar
    ///  3.	El usuario hace clic en el botón Solicitar de uno de los ítems disponibles
    ///  4.	El sistema muestra un panel en el centro de la pantalla que detalla la información del préstamo.
    ///  5.	El usuario hace clic en el botón solicitar préstamo.
    ///  6.	El sistema muestra el resultado respectivo del préstamo.
    ///  7.	El sistema redirecciona a la página de búsqueda.	   
    ///  Flujo Alternativo:
    ///  3.	El usuario hace click en volver. Regresa a los resultados de búsqueda anterior.
    ///  5.	El usuario hace click en cancelar, vuelve al detalle del material bibliográfico	 
    /// </summary>
    [TestClass]
    public class UC002_DetalleMaterialBibliografico
    {
        /// <summary>
        /// El usuario realiza la búsqueda de material bibliográfico de 
        /// acuerdo a los filtros seleccionados y la información ingresada
        /// si el material bibliografico no existe, se envia el mensaje "Items encontrados : 0"
        /// </summary>
        [TestMethod]
        public void UC002_01_VisualisacionResultadoBusqueda_SinResultado()
        {
            using (var ie = new IE())
            {
                SW.LoginUsuario(ie);

                //El usuario escribe en la caja de texto 
                SW.TextoEscribe(ie, "txtBusqueda", "Paolo Coehlo");
                SW.Button(ie, "Buscar").Click();

                //El sistema muestra : La cantidad de items encontrados
                SW.ValidaTexto(ie, "Items encontrados : 0");
            }
        }

        /// <summary>
        /// El usuario realiza la búsqueda de material bibliográfico de 
        /// acuerdo a los filtros seleccionados y la información ingresada
        /// </summary>
        [TestMethod]
        public void UC001_02_VisualisacionResultadoBusqueda()
        {
            using (var ie = new IE())
            {
                SW.LoginUsuario(ie);

                //El usuario escribe en la caja de texto "Verde" 
                SW.TextBox(ie, "txtBusqueda").TypeText("dieucidio");
                SW.Button(ie, "Buscar").Click();

                //El sistema muestra : La cantidad de items encontrados
                SW.ValidaTexto(ie, "Items encontrados : 1");
                SW.ValidaTexto(ie, "Historia de un dieucidio");

                //El sistema muestra en una tabla el detalle de cada resultado presentado
                SW.Link(ie, "Mas informacion").Click();
                SW.ValidaPagina(ie, "DetalleMaterialBibliografico.aspx?ID=");

                //Detalles a mostrar
                SW.ValidaTexto(ie, "Detalle de Material Bibliografico");
                SW.Button(ie, "Volver a los résultados de busqueda");
                SW.ValidaTexto(ie, "Tipo material bibliografico : Libro");
                SW.ValidaTexto(ie, "Historia de un dieucidio");
                SW.ValidaTexto(ie, "Garcia Marquez, Gabriel/Vargas Llosa, Mario");
                SW.ValidaTexto(ie, "Pochette");
                SW.ValidaTexto(ie, "Perú");
                SW.ValidaTexto(ie, "Inglés");
                SW.ValidaTexto(ie, "JL / 3464 / A.45");
                SW.ValidaTexto(ie, "Items encontrados : 1");

            }

        }

        /// <summary>
        ///  3.	El usuario hace clic en el botón Solicitar de uno de los ítems disponibles
        ///  4.	El sistema muestra un panel en el centro de la pantalla que detalla la información del préstamo.
        ///  5.	El usuario hace clic en el botón solicitar préstamo.
        ///  6.	El sistema muestra el resultado respectivo del préstamo.
        ///  7.	El sistema redirecciona a la página de búsqueda.	
        /// </summary>
        [TestMethod]
        public void UC001_03_SolicitarPrestamo()
        {
            using (var ie = new IE())
            {
                SW.LoginUsuario(ie);

                //El usuario escribe en la caja de texto "Verde" 
                SW.TextBox(ie, "txtBusqueda").TypeText("dieucidio");
                SW.Button(ie, "Buscar").Click();

                //El sistema muestra : La cantidad de items encontrados
                SW.ValidaTexto(ie, "Items encontrados : 1");
                SW.ValidaTexto(ie, "Historia de un dieucidio");

                //El sistema muestra en una tabla el detalle de cada resultado presentado
                SW.Link(ie, "Mas informacion").Click();
                SW.ValidaPagina(ie, "DetalleMaterialBibliografico.aspx?ID=");

                SW.Link(ie, "Solicitar").Click();
                SW.ValidaPagina(ie, "PrestamoMaterialBibliografico.aspx?ID=");

                /*
                •Instrucciones por tipo de prestamo
                •Estas son las instrucciones para los libros de pregrado
                •Nombres y apellidos del usuario : Jara, Gabriel
                •Titulo : Historia de un dieucidio
                •Clasificacion : NINI29
                •Fecha de préstamo : 10:30:25.0
                •Fecha limite de dévolucion : 10:30:25.0
                 */
                SW.ValidaTexto(ie,"Estas son las instrucciones para los libros de pregrado");
                SW.ValidaTexto(ie,"Titulo : Historia de un dieucidio");
                SW.ValidaTexto(ie,"Nombres y apellidos del usuario : Jara, Gabriel");
                SW.ValidaTexto(ie,"Clasificacion : NroIng9");
                SW.ValidaTexto(ie,"Fecha de préstamo : 10:30:25.0");
                SW.ValidaTexto(ie,"Fecha limite de dévolucion : 10:30:25.0");
            }
        }

        /// <summary>
        ///  3.	El usuario hace clic en el botón Solicitar de uno de los ítems disponibles
        ///  4.	El sistema muestra un panel en el centro de la pantalla que detalla la información del préstamo.
        ///  5.	El usuario hace clic en el botón solicitar préstamo.
        ///  6.	El sistema muestra el resultado respectivo del préstamo.
        ///  7.	El sistema redirecciona a la página de búsqueda.	
        /// </summary>
        [TestMethod]
        public void UC001_04_RegresarResultadoPrestamo()
        {
            using (var ie = new IE())
            {
                SW.LoginUsuario(ie);

                //El usuario escribe en la caja de texto 
                SW.TextBox(ie, "txtBusqueda").TypeText("dieucidio");
                SW.Button(ie, "Buscar").Click();

                //El sistema muestra : La cantidad de items encontrados
                SW.ValidaTexto(ie, "Items encontrados : 1");
                SW.ValidaTexto(ie, "Historia de un dieucidio");

                //El sistema muestra en una tabla el detalle de cada resultado presentado
                SW.Link(ie, "Mas informacion").Click();
                SW.ValidaPagina(ie, "DetalleMaterialBibliografico.aspx?ID=");

                //El sistema redirecciona a la página de búsqueda.	
                SW.Button(ie, "Volver a los résultados de busqueda").Click();
            }
        }

        /// <summary>
        ///  3.	El usuario hace clic en el botón Solicitar de uno de los ítems disponibles
        ///  4.	El sistema muestra un panel en el centro de la pantalla que detalla la información del préstamo.
        ///  5.	El usuario hace clic en el botón solicitar préstamo.
        ///  6.	El sistema muestra el resultado respectivo del préstamo.	
        ///  7.	El usuario hace click en cancelar, vuelve al detalle del material bibliográfico	 
        /// </summary>
        [TestMethod]
        public void UC001_05_RegresarDetalle()
        {
            using (var ie = new IE())
            {
                SW.LoginUsuario(ie);

                //El usuario escribe en la caja de texto 
                SW.TextBox(ie, "txtBusqueda").TypeText("dieucidio");
                SW.Button(ie, "Buscar").Click();

                //El sistema muestra en una tabla el detalle de cada resultado presentado
                SW.Link(ie, "Mas informacion").Click();
                SW.ValidaPagina(ie, "DetalleMaterialBibliografico.aspx?ID=");

                SW.Link(ie, "Solicitar").Click();
                SW.ValidaPagina(ie, "PrestamoMaterialBibliografico.aspx");
                SW.Button(ie, "Cancelar").Click();
                SW.ValidaPagina(ie, "DetalleMaterialBibliografico.aspx?ID=");
            }
        }
    }
}
